Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO


■プリンタポート
対象	ノーマル,LT・HA
チップ	8255A相当品
解説  o ノーマルモードでは、プリンタポートに8255相当品を使用している。
      o ポートは出力のみであり、プリンタポートではBUSYの1ビットのみ入力が
	が行われる。
      o プリンタポートの8255のポートB,Cでは、プリンタポート以外の目的にも
	用いられる。
関連	INT 1Ah
	I/O 0439h bit 7
	0000:0458h bit 2,1
	0000:05B3h


I/O	0040h
名前	データポート
機能
	[READ/WRITE]
	bit 7〜0: PORT Aリード/ライト
解説  o プリンタポートに出力するパラレルデータを設定する。
      o このポートは8255のPORT Aである。通常、モード0出力で初期化されている。
      u このポートに対する読みだしは、診断のための読み出しである。通常、最後
	に書き込まれた値が読み出されるが、ノートタイプの一部機種ではプルアップ
	抵抗に流れる電流による消費電力を押さえるために、一定時間プリンタ関係
	のI/OへのアクセスがないとこのポートにFFhを設定する。このため、必ずしも
	読み出された値が最後にプリンタに送出された値とは限らない。
関連	I/O 0042h
	I/O 0046h


I/O	0042h
名前	ステータスポート
機能
	[READ]	PORT Bリード
	bit 7,6: TYP1,0	システムタイプ
		11b= PC-9801U,PC-98LT・HA
		10b= その他の機種
		01b= 未定義
		00b= PC-9801初代
	bit 5: MOD	システムクロック
		1= 8MHz(タイマクロック2.0MHz)
		0= 5/10MHz(タイマクロック2.5MHz)
	bit 4: LCD	プラズマディスプレイ使用状態(DIP SW 1-3)
		1= 使用しない(DIP SW 1-3 OFF),LT・HA,NOTE
		0= 使用する(DIP SW 1-3 ON)
		* DIP SWの状態がそのまま見えるだけで、現在のモードを示して
		  いるわけではない。ハイレゾ兼用機でもSW読み出し・機能とも
		  有効。
	bit 3: HGC	グラフィック拡張機能(DIP SW 1-8)
		1= 基本モード(DIP SW 1-8 OFF),LT・HA
		0= 拡張モード(DIP SW 1-8 ON)
		* DIP SWの状態がそのまま見えるだけで、現在のモードを示して
		  いるわけではない。
	bit 2: プリンタインタフェイスBUSY#信号
		1= インアクティブ
		0= アクティブ(BUSY状態)
	bit 1: CPUT	動作CPU■[ノーマル]
		1= V30,V33
		0= 8086,286,386,486,Pentiumプロセッサ
		* 実際に動作しているCPUを示す。
	bit 1: CPUT	システムタイプ■[LT・HA]
		1= HA
		0= LT
	bit 0: VF	VFフラグ
		1= PC-9801VF,PC-9801U
		   * 内蔵2DD I/Fしか持たない機種
		0= その他の機種
		
		
	[WRITE]	PORT Bライト
		無動作
		■[HA]HAでは、初期化時にメモリスイッチ11hの値を書き込む。
		bit 2,1以外のビットは、書き込んだ値が読める。
解説  o プリンタポートから入力する各種ステータス、一部ディップスイッチの
	設定等を読み出す。
      o このポートは8255のPORT Bである。通常、モード0入力で初期化されている。
      o PC-H98(ノーマルモード)で、INT 1Ah - Function 17hを実行し、
	プリンタインタフェースをフルセントロニクス化すると、この
	I/Oポートはハイレゾ互換になる。
関連	I/O 0040h


I/O	0044h
名前	ストローブポート
機能
	[READ/WRITE]
	bit 7: PSTB#	プリンタストローブ信号
	bit 6〜4: 未使用(000bにする)
	bit 3: IR8(INT 10h)割り込み要求
		0= ON
		1= OFF		
		* 8086,V30動作時のみ。286以上のCPU動作時は(V30相当モード含む)
		  切り離される。ただし、PC-9821Cx2・Cb2ではIR8はリモコンコント
		  ローラで使用されている。LT・HAでは未使用。
	bit 2: 未使用(0にする)
	bit 1: RST287/RST387
		0= CPUリセットでリセットしない
		1= CPUリセットでリセットする
		* 287,387動作時のみ
	bit 0: 未使用(0にする)
解説  o プリンタのストローブを制御する。
      o このポートは8255のPORT Cである。通常、モード0出力で初期化されている。
      o 詳細は8255データシート参照。
      o PC-H98(ノーマルモード)で、INT 1Ah - Function 17hを実行し、
	プリンタインタフェースをフルセントロニクス化すると、この
	I/Oポートはハイレゾ互換になる。
関連	I/O 0040h


I/O	0046h
名前	コントロールレジスタ
機能
	[READ]	なし
	[WRITE]	コントロールレジスタライト
解説  o 8255のモード設定を行う。通常、xxhで初期化されている。
      o 詳細は8255データシート参照。
関連	I/O 0040h
===============================================================================



■プリンタポート
対象	ハイレゾ
チップ	8255A
解説  o ハイレゾモードでは、フルセントロニクス化されたプリンタインタフェース
	が使用される。
      o PC-H98シリーズではプリンタポートから入力を行うことも可能である。
関連	INT 1Ah
	0000:041Ch		
	I/O 0439h bit 7


I/O	0040h
名前	データポート
機能
	[READ/WRITE]
	bit 7〜0: プリンタポートに出力するパラレルデータ
解説  o プリンタポートに出力するパラレルデータを設定する。
      o このポートは8255のPORT Aである。通常、モード1出力で初期化されている。
      o 詳細は8255データシート参照。
関連	I/O 0042h
	I/O 0046h


I/O	0042h
名前	ステータスポート
機能
	[READ]	PORT Bリード
	bit 7: SELECT#
	bit 6: FAULT#
	bit 5: PE#
	bit 4: DC+5V#
	bit 3: INPUT BUSY#
	bit 2: BUSY#
	bit 1: Reserved
		
		
		
		
		
	bit 0: ACK#
		1= インアクティブ
		0= アクティブ
	[WRITE]	PORT Bライト
		* 無動作
解説  o プリンタポートから入力する各種ステータス、一部ディップスイッチの
	設定等を読み出す。
      o このポートは8255のPORT Bである。通常、モード0入力で初期化されている。
      o 詳細は8255データシート参照。
関連	I/O 0040h
	I/O 0046h


I/O	0044h
名前	ストローブポート
機能
	[READ/WRITE]	PORT Cリード/ライト
	bit 7: OBF#(Output Buffer Full)
		0= プリンタデータ受付不可
		1= プリンタデータ受付可能
		
		* 外部には未接続。
	bit 6: ACK#(Acknowledge Input)
		0= データ受付完了
		* プリンタコネクタのACKNLGに接続される。(リード時)
	bit 5,4: 未使用
	bit 3: INT 16h出力(スレーブPIC IR6)
		* I/O 0042h bit 1に接続される。
	bit 2: PSTB#出力
		0= アクティブ
		1= No Operation
		* プリンタポートのPSTB#信号
	bit 1: RST287/RST387出力
		0= CPUリセットでリセットしない
		1= CPUリセットでリセットする
		* (287,387動作時のみ)
	bit 0: INPUT PRIME#出力
		0= アクティブ
		1= No Operation
		* プリンタポートのINPUT PRIME#信号
		  プリンタをリセットする。

解説  o プリンタのストローブを制御する。
      o このポートは8255のPORT Cである。通常、上位4ビットはモード1、下位4ビット
	はモード0出力に設定される。
      o 詳細は8255データシート参照。
関連	I/O 0046h


I/O	0046h
名前	コントロールレジスタ
機能
	[READ]	なし
	[WRITE]	コントロールレジスタライト
解説  o 8255のモード設定を行う。
      o このポートは8255のPORT Cである。
	通常、PORT Aはモード1出力、PORT Bはモード0入力、PORT Cの上位4ビットは
	モード1、下位4ビットはモード0出力に設定される。
      o 詳細は8255データシート参照。
関連	I/O 0040h
	I/O 0042h
	I/O 0044h


I/O	0448h
名前	プリンタインタフェイス拡張モードレジスタ
対象	PC-H98
機能
	[READ] ステータスリード
	bit 7: IS	INTステータス
		1= INT要因発生(このポートをリードすると0になる)
		0= INT要因なし
	bit 6,5: 未使用
	bit 4: IE	INTイネーブル
		1= イネーブル
		0= ディスエーブル
	bit 3: DMA	DMA/INTモード
		1= DMAモード
		0= INTモード
	bit 2,1: 未使用
	bit 0 : MOD	プリンタモード
		1= 拡張モード(フルセントロモード,DMA・DRSTを有効にする)
		0= 互換モード(簡易セントロモード,DMA・DRSTを無効にする)

	[WRITE]	ステータスセット
	bit 7: 未使用(0にする)
	bit 6: DRST	DMA TC割り込みのリセット
		1= DMATC割り込みのリセット
		0= No Operation
	bit 5: 未使用(0にする)
	bit 4: IE	INTイネーブル(割込がエッジモードのときは無効)
		1= イネーブル
		0= ディスエーブル
	bit 3: DMA	DMA/INTモード設定
		1= DMAモード
		0= INTモード
	bit 2,1: 未使用(00bにする)
	bit 0: MOD	プリンタモード設定
		1= 拡張モード(フルセントロモード, DMA・DRSTを有効にする)
		0= 互換モード(簡易セントロモード, DMA・DRSTを無効にする)
解説  o プリンタモードをフルセントロニクスモードに設定するか、簡易セントロ
	ニクスモードに設定するか選択する。
      o PC-H98シリーズでは、このポートの操作を行うことでノーマルモードでも
	フルセントロニクスモードを使用することが可能である。
関連	INT 1Ah - Function 17h
	INT 1Ah - Function 1Ah
-------------------------------------------------------------------------------


■IEEE STD 1284インタフェース
対象	IEEE STD 1284搭載機
用語  o PC-9800シリーズのIEEE STD 1284搭載機では、36ピンの1284-Cコネクタを
	使用している。各信号線は以下のように定義されている。

	--------+------+--------------------------------------------------
	ピン番号| 方向 |信号線の名称
	        |      |コンパチブル |ニブル/バイト |ECP            |EPP
	--------+------+---------+----------+---------------+-------------
	1       | P→H |Busy     |PtrBusy   |PeriphAck      |nWait
	2       | P→H |Select   |Xflag     |Xflag          |UserDef2
	3       | P→H |nAck     |PtrClk    |PeriphClk      |Intr
	4       | P→H |nFault   |nDataAvail|nPeriphRequest |UserDef2
	5       | P→H |PError   |AckDataReq|nAckReverse    |UserDef1
	6       |Bi-Dir|Data1    |Data1     |Data1          |AD1
	7       |Bi-Dir|Data2    |Data2     |Data2          |AD2
	8       |Bi-Dir|Data3    |Data3     |Data3          |AD3
	9       |Bi-Dir|Data4    |Data4     |Data4          |AD4
	10      |Bi-Dir|Data5    |Data5     |Data5          |AD5
	11      |Bi-Dir|Data6    |Data6     |Data6          |AD6
	12      |Bi-Dir|Data7    |Data7     |Data7          |AD7
	13      |Bi-Dir|Data8    |Data8     |Data8          |AD8
	14      | H→P |nInit    |nInit     |nReverseRequest|nInit
	15      | H→P |nStrobe  |HostClk   |HostClk        |nWrite
	16      | H→P |nSelectIn|1284Active|1284Active     |nAStrb
	17      | H→P |nAutoFd  |HostBusy  |HostAck        |nDStrb
	18      | H→P |               Host Logic High
	--------+------+--------------------------------------------------
	19      |      |               S-GND(Busy)
	20      |      |               S-GND(Select)
	21      |      |               S-GND(nAck)
	22      |      |               S-GND(nFault)
	23      |      |               S-GND(PError)
	24      |      |               S-GND(Data1)
	25      |      |               S-GND(Data2)
	26      |      |               S-GND(Data3)
	27      |      |               S-GND(Data4)
	28      |      |               S-GND(Data5)
	29      |      |               S-GND(Data6)
	30      |      |               S-GND(Data7)
	31      |      |               S-GND(Data8)
	32      |      |               S-GND(nInit)
	33      |      |               S-GND(nStrobe)
	34      |      |               S-GND(nSelectIn)
	35      |      |               S-GND(nAutoFd)
	36      | P→H |               S-GND(PeripheralLogicHigh)
	--------+------+--------------------------------------------------
	* 各信号線の方向は
	  P→H:   外部機器からホストへ
	  H→P:   ホストから外部機器へ
	  Bi-Dir: 双方向

      o ECPのためのインタフェースは、ISAバス上でのインプリメントとほぼ同等で
	ある。
      o 16バイトのFIFOを搭載し、RLEの圧縮/伸長をハードウェアで行う。ただし、
	インタフェース自体はいかなるプロトコルのネゴシエーションも行わない
	ので、プロトコルモードの変更時にはソフトウェアでネゴシエーションを
	行っておく必要がある。
      o IEEE P1284搭載機種のうち、PC-9821Ap2・As2・Bp・Bs・Be・Bf・Ts・Cs2・Ce2は
	ECPモードを搭載していない。ECPモード以外のFIFO等の機能は使用する
	ことが出来る。
	---------+---------------------------------------------------
	ECPモード|機種名
	---------+---------------------------------------------------
	なし     |PC-9821Ap2・As2・Bp・Bs・Be・Bf・Ts・Cs2・Ce2	
	         |PC-9801NS/A
	---------+---------------------------------------------------
	あり     |PC-9821An・Ap3・As3・Xt・Xa・Xf・Xn・Xp・Xs・Xe・Cf・Cx・Cb
	         |       Xa16・Xa13・Xa12・Xa10・Xa9・Xa7・Xe10・Xt16・Xt13・St15
	         |       Xv13・Xb10・V10・V7・Cx2・Cb2・Cx3・Cb3
	         |PC-9821Nf・Np・Ns・Ne2・Nd・Nm・Es・Ld・Lt・Ne3・Nd2・Na7・Nx・Lt2
	         |PC-9801BA3・BX3・BX4
	---------+---------------------------------------------------

関連	0000:0458h bit 2,1
	0000:05B3h bit 7,6,5		
	INT 1Ah - Function 17h
	INT 1Ah - Function 1Ah
	INT 1Ah - Function 1Bh
	INT 1Ah - Function 1Ch
	INT 1Ah - Function 1Dh


I/O	0140h
名前	データポート
	Undocumented
機能
	[READ/WRITE]■[スタンダードパラレルポートモード]
		* プリンタデータ出力と診断のための読みだし
	[READ/WRITE]■[PS/2パラレルポートモード]
		* 8bitデータ入出力ポート
	[WRITE]■[ECPモード]
		bit 7: カウント/アドレス
			1= チャネルアドレス
			0= ランレングスカウント
		bit 6〜0: カウント/アドレス
		* フォワードチャネルコマンド
解説  o IEEE STD 1284コネクタのD0〜D7に出力するデータを設定する。
      o I/O 0149h bit 4が1の時のみ有効
関連	I/O 0149h bit 4


I/O	0141h
名前	デバイスステータスポート
	Undocumented
機能
	[WRITE]	なし
	[READ]
	bit 7: nBusy
		1= インアクティブ
		0= アクティブ
		* 1284Cコネクタの1番ピン
	bit 6: nAck
		1= インアクティブ
		0= アクティブ
		* 1284Cコネクタの3番ピン
	bit 5: PError
		1= アクティブ
		0= インアクティブ
		* 1284Cコネクタの5番ピン
	bit 4: Select
		1= アクティブ
		0= インアクティブ
		* 1284Cコネクタの2番ピン
	bit 3: nFault
		1= インアクティブ
		0= アクティブ
		* 1284Cコネクタの4番ピン
	bit 2: 未使用?
		
	bit 1: DC+5V
		1= アクティブ
		0= インアクティブ
		* 1284Cコネクタの36番ピン
	bit 0: 未使用

解説  o IEEE STD 1284コネクタの各種ステータス信号線の状態を読み取る。
      u PC-9821As2・Ap2・Bp・Bs・Be・Bf・Cs2・Ce2・Ts,PC-9801NS/Aに付属のプリンタ
	インタフェース変換コネクタでは、データ出力のbit 7が+5Vに接続され
	ている。通常のプリンタでは、+5Vが動作中に変化することはないので、
	+5Vが、データ出力のbit 7のに同期して変化するかどうかで変換コネクタ
	が装着されているかどうかを調べることが出来る。
      o I/O 0149h bit 4が1の時のみ有効
関連	INT 1Ah - Function 12h
	I/O 0149h bit 4


I/O	0142h
名前	デバイスコントロールポート
	Undocumented
対象	IEEE STD 1284搭載機
機能
	[READ/WRITE]
	bit 7,6: 未使用(常に00bにする)
	bit 5: Direction
		1= INPUT方向
		0= OUTPUT方向
		* PS/2モードのみ有効
		* 1284Cコネクタの6〜13番ピンの方向を設定する
	bit 4: ackIntEn.
		1= Enable
		0= Disable
	bit 3: SelectIn
		1= High
		0= Low
		* 1284Cコネクタの16番ピン
	bit 2: nInit
		1= High
		0= Low
		* 1284Cコネクタの14番ピン
	bit 1: AUTO FDxt
		1= Low
		0= High
		* 1284Cコネクタの17番ピン
	bit 0: storobe
		1= Low
		0= High
		* 1284Cコネクタの15番ピン
解説  o 各種ストローブ出力の状態を設定する。
      o データ入力方向に設定するためには、I/O 014Eh bit 5でPS/2パラレルポート
	モードに設定されている必要がある。
      o I/O 0149h bit 4が1の時のみ有効
関連	I/O 0149h bit 4
	I/O 014Eh bit 5


I/O	0149h
名前	パラレルポートモード設定
	Undocumented
対象	IEEE STD 1284搭載機
機能
	[READ/WRITE]
	bit 7: 不明(常に0)
	bit 6: 不明
	bit 5: 不明(常に0)
	bit 4: パラレルポートモード
		0= 簡易セントロニクスモード
		1= 拡張パラレルポートモード
	bit 3,2: 不明(常に00b)
	bit 1: 不明
	bit 0: 不明
解説  o プリンタインタフェースモードを設定する。
      o 起動時は簡易セントロニクスモードに設定されているので、I/O 0149h bit 4
	は0である。拡張されたパラレルポート機能を使用するためにはこのビットを
	1にする必要がある。このビットが0のときI/O 0140h,0141h,0142h,014Bh,
	014Ch,014Dh,014Ehは無効である。
関連	INT 1Ah - Function 17h		
	INT 1Ah - Function 1Ah		
	0000:05B3h bit 7
	0000:0458h bit 2
	I/O 0140h
	I/O 0141h
	I/O 0142h
	I/O 014Bh
	I/O 014Ch
	I/O 014Dh
	I/O 014Eh


I/O	014Bh
名前	不明
	Undocumented
対象	IEEE STD 1284搭載機
機能
	[READ]
	bit 7〜0: 不明
		
		
解説  o 詳細不明
関連	I/O 0149h bit 4


I/O	014Ch
名前	Parallel Port Data FIFO
	Test FIFO
	Configuration Register A
	Undocumented
対象	IEEE STD 1284搭載機
機能
	■[パラレルポートFIFOモード]
	[WRITE]■[Direction=0のとき]
	[READ]■[Direction=1のとき]
		* パラレルポートからの入出力FIFO
		* 方向は、I/O 0142h bit 5のDirectionで設定される。
		関連	I/O 0142h bit 5

	■[FIFOテストモード]
	[READ/WRITE]
		* FIFOのテストデータの書き込み、読みだし。

	■[コンフィギュレーションモード]
	[READ/WRITE]
		bit 7: 割り込みタイプ
			1= レベルトリガ
			0= エッヂトリガ
			* PC-9800シリーズではエッヂトリガを使用する
		bit 6〜4: インプリメントID
			000b= 16ビットインプリメンテーション
			001b= 8ビットインプリメンテーション
			010b= 32ビットインプリメンテーション
			011b
			 :  = リザーブ
			111b
			* PC-9800シリーズでは8ビットインプリメンテーションさ
			れている。
		bit 3: リザーブ
		bit 2: nByteInTransceiver
			* イベント35での動作
		bit 1,0: FIFOリカバリ
			00b= a complete PWord.
			01b= only 1 valid byte.
			10b= 2 valid bytes.
			11b= 3 valid bytes.
			* PC-9800シリーズでは8ビットインプリメンテーションの
			  ため、意味をもたない。
解説  o このポートは、I/O 014Eh bit 7〜5で設定されるモードによって4種類の
	意味を持つ。
      o パラレルポートFIFOモードでは、パラレルポートへのデータFIFOポートとして
	機能する。READ/WRITEの方向は、I/O 0142h bit 5のDirectionビットで設定
	された方向のみが有効である。
      o TEST FIFOモードでは、FIFOのテスト機能のために用いられる。このポートは
	書き込み、読みだしの両方が可能となり、書き込みを行った順にデータの
	読みだしが可能となる。FIFOは16バイトの容量を持つ。
      o コンフィギュレーションモードでは、インタフェースの状態を示すポートと
	して用いられる。読み出しのみ可能である。
関連	0000:05B3h bit 7
	I/O 0142h bit 5			
	I/O 014Eh bit 7〜5		
	I/O 014Eh bit 1,0		


I/O	014Dh
名前	Configuration Register B
	Undocumented
対象	IEEE STD 1284搭載機
機能
	[READ]
	bit 7: compress
	bit 6: intrValue
	bit 5〜3: 割り込みアドレス
		111b= IRQ5
		110b= IRQ15
		101b= IRQ14
		100b= IRQ11
		011b= IRQ10
		010b= IRQ9
		001b= IRQ7
		000b= ジャンパされたIRQアドレス
		* PC-9800シリーズでは常に110bを返すが、実際にはIRQ14が使用
		  されている。
	bit 2〜0: DMAチャネル
		111b= DMAチャネル7(PC-9801シリーズでは無効)
		110b= DMAチャネル6(PC-9801シリーズでは無効)
		101b= DMAチャネル5(PC-9801シリーズでは無効)
		100b= ジャンパされた16bitDMAチャネル(PC-9801シリーズでは無効)
		011b= DMAチャネル3
		010b= DMAチャネル2
		001b= DMAチャネル1
		000b= ジャンパされた8bitDMAチャネル
		* PC-9801シリーズではパラレルポートのためにDMAは使用されない
		  ので、常に000bが返される。
解説  o このポートは、I/O 014Eh bit 7〜5でコンフィギュレーションモードに設定
	されているときのみアクセス可能である。
      o 
関連	0000:05B3h bit 7
	I/O 014Eh bit 7〜5		


I/O	014Eh
名前	拡張コントロールレジスタ
	Undocumented
対象	IEEE STD 1284搭載機
機能
	[READ/WRITE]
	bit 7〜5: パラレルインタフェースモード
		000b= スタンダードパラレルポートモード
		001b= PS/2パラレルポートモード
		010b= パラレルポートFIFOモード
		011b= ECPパラレルポートモード
		100b= 不明(ベンダユニーク)
		101b= 不明(ベンダユニーク)
		110b= FIFOテストモード
		111b= コンフィギュレーションモード
	bit 4: 割り込み許可
		1= 割り込み無効
		0= 割り込み有効
		* nFault立ち下がりエッヂで割り込みを発生させるかどうか
		  設定する
	bit 3: DMA転送許可
		1= 許可
		0= 禁止
		* PC-9800シリーズでは常に0
	bit 2: DMA終了割り込み許可
		1= 割り込み禁止
		0= 割り込み許可
		* PC-9800シリーズでは常に1
	bit 1: FIFOフル
		1= FIFOメモリにデータが16バイトある
		0= FIFOメモリはまだデータを格納可能
	bit 0: FIFOエンプティ
		1= FIFOメモリにデータはない
		0= FIFOメモリにデータが格納されている
解説  o IEEE STD 1284インタフェースの入力動作を許可する。
      o パラレルインタフェースモードとしてECPモードを搭載していない機種と
	ECPモードを搭載している機種がある。ECPモードを搭載していない機種では、
	bit 7〜5に011bを指定した書き込みを行っても、bit 7〜5の値は変化しない。

	表: IEEE P1284を搭載し、ECPモードが使用できない機種
	-----------------------------------------------------------------
	PC-9821Ap2・As2・Bp・Bs・Be・Ts・Bf・Cs2・Ce2
	PC-9801BA2・BS2・BX2
	-----------------------------------------------------------------
	

関連	I/O 0149h bit 4
	I/O 014Ch
	I/O 014Dh